package ${package.common}.exception;

/**
* 响应码
*
* @author ${author}
* @since ${date}
*/
// @Deprecated
public enum ExceptionCode {


    /**
    * 成功
    */
    OK(200, "成功！"),


    /**
    * 错误请求
    */
    BAD_REQUEST(400, "错误请求！"),


    /**
    * 未授权
    */
    UNAUTHORIZED(401, "未授权！"),


    /**
    * 资源不存在
    */
    NOT_FOUND(404, "资源不存在！"),


    /**
    * 请求方式错误
    */
    METHOD_NOT_ALLOWED(405, "请求方式错误！"),


    /**
    * 服务器忙，请稍候重试
    */
    INTERNAL_SERVER_ERROR(500, "服务器异常，请联系管理员！");


    private static final ExceptionCode[] VALUES;


    static {
        VALUES = values();
    }


    private final int code;


    private final String message;


    ExceptionCode(int code, String message) {
        this.code = code;
        this.message = message;
    }




    /**
    * 根据代码值获取响应代码
    *
    * @param code 响应代码值
    * @return 响应代码
    * @throws IllegalArgumentException 参数异常
    */
    public static ExceptionCode valueOf(int code) {
        ExceptionCode status = resolve(code);
        if (status == null) {
            throw new IllegalArgumentException("未匹配到代码值 [" + code + "]");
        }
        return status;
    }


    /**
    * 根据代码值获取响应代码
    *
    * @param code 响应代码值
    * @return 响应代码
    */
    public static ExceptionCode resolve(int code) {
        for (ExceptionCode status : VALUES) {
            if (status.code == code) {
                return status;
            }
        }
        return null;
    }


    /**
    * 响应代码值
    */
    public int getCode() {
        return this.code;
    }


    /**
    * 返回代码消息
    */
    public String getMessage() {
        return this.message;
    }


    @Override
    public String toString() {
        return this.code + " " + name();
    }
}
